package alogrithm;

import java.util.HashMap;
import java.util.Map;

/**
 * @author lbw
 * @version 1.0
 * @date 2021/10/16 10:30
 */
public class MaxLength {
    public int maxLength(int[] arr) {
        // write code here
        int n = arr.length;
        int res = 0;
        int tmp = 0;
        Map<Integer, Integer> map = new HashMap<>();
        for (int i = 0; i < n; ++i) {
            // 首先假设当前元素没有在数组中出现过
            int j = i - 1;
            // 如果该值存在, 得到该元素前面最近出现的下标
            if (map.containsKey(arr[i])) {
                j = map.get(arr[i]);
            }
            // 更新该元素最近出现的下标
            map.put(arr[i], i);
            tmp = tmp < i - j ? tmp + 1 : i - j;
            res = Math.max(res, tmp);
        }
        return res;
    }
}
